package com.css.gitstats.service;

import java.util.List;

import org.gitlab4j.api.GitLabApiException;

import com.css.gitstats.domain.GitGroup;
import com.css.gitstats.domain.GitProject;
import com.css.gitstats.domain.GitProjectStatistics;
import com.css.gitstats.domain.vo.GitProjectQueryCriteria;

public interface GitstatsProjectStatistics {

	/**
	 * 获取项目提交活动
	 * @param gitProjectQueryCriteria
	 * @return
	 * @throws GitLabApiException
	 */
	List<GitProjectStatistics> getProjectActivity(GitProjectQueryCriteria gitProjectQueryCriteria)
			throws GitLabApiException;

	/**
	 * 查询所有项目
	 * @return
	 * @throws GitLabApiException
	 */
	List<GitProject> findProject() throws GitLabApiException;

	/**
	 * 根据组ID或路径获取项目信息
	 * @param groupIdOrPath
	 * @return
	 * @throws GitLabApiException
	 */
	List<GitProject> getProjectsByGroupIdOrPath(Object groupIdOrPath) throws GitLabApiException;

	/**
	 * 根据项目id或路径获取项目信息
	 * @param projectIdOrPath
	 * @return
	 * @throws GitLabApiException
	 */
	GitProject getProjectsByIdOrPath(Object projectIdOrPath) throws GitLabApiException;

	/**
	 * 获取组列表
	 * @return
	 */
	List<GitGroup> findGroups();

	/**
	 * 根据groupId或path查询group
	 * @param groupIdOrPath
	 * @return
	 */
	GitGroup getGroupByIdOrPath(Object groupIdOrPath);

}